package com.ls.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ls.dto.EmployeeDto;
import com.ls.dto.PositionDto;
import com.ls.mapper.PositionMapper;
import com.ls.service.EmployeeService;
import com.ls.service.PositionService;
import com.ls.utils.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PositionServiceImpl implements PositionService {

    @Autowired
    private PositionMapper positionMapper;

    /**
     * 添加职位
     * @param positionDto
     * @return
     */
    @Override
    public Boolean add(PositionDto positionDto) {
        try{

            positionMapper.add(positionDto);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 修改职位信息
     * @param positionDto
     * @return
     */
    @Override
    public Boolean update(PositionDto positionDto) {
        try {
            positionMapper.update(positionDto);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 删除职位信息
     * @param positionDto
     * @return
     */
    @Override
    public Boolean delete(PositionDto positionDto) {
        try {
            positionMapper.delete(positionDto);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 修改状态信息
     * @param positionDto
     * @return
     */
    @Override
    public Boolean updStatus(PositionDto positionDto) {
        try {
            positionMapper.updStatus(positionDto);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 职位是否存在
     * @param positionDto
     * @return
     */
    @Override
    public Boolean isRepeat(PositionDto positionDto) {
        try {
            if (positionMapper.isRepeat(positionDto)>0){
                return true;
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }

    /**
     * 添加职位(结果集)
     * @param positionDto
     * @return
     */
    @Override
    public Status addResult(PositionDto positionDto) {
        if (add(positionDto)){
            return new Status().setStatus(true).setMsg("添加成功~");
        }
        return new Status().setStatus(false).setMsg("添加失败~");
    }

    /**
     * 修改职位信息(结果集)
     * @param positionDto
     * @return
     */
    @Override
    public Status updateResult(PositionDto positionDto) {
        if (update(positionDto)){
            return new Status().setStatus(true).setMsg("修改成功~");
        }
        return new Status().setStatus(false).setMsg("修改失败~");
    }

    /**
     * 删除职位信息(结果集)
     * @param positionDto
     * @return
     */
    @Override
    public Status deleteResult(PositionDto positionDto) {
        if (delete(positionDto)){
            return new Status().setStatus(true).setMsg("删除成功~");
        }
        return new Status().setStatus(false).setMsg("删除失败~");
    }

    /**
     * 修改状态信息(结果集)
     * @param positionDto
     * @return
     */
    @Override
    public Status updStatusResult(PositionDto positionDto) {
        if (updStatus(positionDto)){
            return new Status().setStatus(true).setMsg("修改成功~");
        }
        return new Status().setStatus(false).setMsg("修改失败~");
    }

    /**
     * 职位是否存在(结果集)
     * @param positionDto
     * @return
     */
    @Override
    public Status isRepeatResult(PositionDto positionDto) {
        if (isRepeat(positionDto)){
            return new Status().setStatus(true).setMsg("职位已存在~");
        }else {
            return new Status().setStatus(false).setMsg("职位不存在");
        }
    }

    /**
     * 查看职位信息(结果集)
     * @param positionDto
     * @return
     */
    @Override
    public Status selectResult(PositionDto positionDto) {
        try {
            return new Status().setStatus(true).setMsg(positionMapper.select(positionDto));
        } catch (Exception e) {
            return new Status().setStatus(false).setMsg("操作失败~");
        }
    }

    /**
     * 获取职位信息(结果集)(带筛选状态)
     * @param positionDto
     * @return
     */
    @Override
    public Status getPositionsResult(PositionDto positionDto) {

        PageHelper.startPage(positionDto.getPage(),positionDto.getPageSize());

        PageInfo positions = new PageInfo(positionMapper.getPositions(positionDto));

        try {
            return new Status().setStatus(true).setMsg(positions);
        } catch (Exception e) {
            return new Status().setStatus(false).setMsg("获取失败~");
        }
    }

    /**
     * 添加职位信息
     * @param employeeDto
     * @return
     */
    @Override
    public Integer getPositionId(EmployeeDto employeeDto) {

        PositionDto positionDto = new PositionDto();

        positionDto.setDepId(employeeDto.getDepId());

        positionDto.setPositionName(employeeDto.getPositionName());

        positionDto.setStatus(1);

        add(positionDto);

        return getMaxId();
    }

    @Override
    public Integer update(Integer positionId, String positionName) {
        return positionMapper.updateMessage(positionId,positionName);
    }

    /**
     * 获取最新添加职位id
     * @return
     */
    private Integer getMaxId() {

        return positionMapper.getMaxId();
    }
}
